#ifndef _API_KARAOK_H
#define _API_KARAOK_H

void karaok_enable_mic_first(u16 vol);
void karaok_enable_mic_first_percent(u8 percent );  //mic_first音乐音量是正常音乐音量的百分比.  10即10%
bool is_karaok_mic_first(void);    //当前是否处于mic_first, flash函数
void karaok_disable_mic_first(void);
void karaok_set_mic_volume(u16 vol);       //MIC总音量
void mic_first_init(u8 v_cnt, u16 v_pow, u8 s_cnt, u16 s_pow);
void karaok_mic_first_music_vol_fade_enable(u16 fade_in_step,  u16 fade_out_step);
void karaok_set_mic_left_volume(u16 vol);  //MICL音量,32767(0DB) //双MIC时有效
void karaok_set_mic_right_volume(u16 vol); //MICR音量,32767(0DB) //双MIC时有效
void karaok_set_music_volume(u16 vol);
void karaok_init(void *cfg);
void karaok_bufmode(uint mode);             //mode=1时使用降采样算法加大混响Buffer
void karaok_buf_nr_init(u16 nt);            //使用降采样缩小混响buf，能使用降噪算法,nt为降噪的值
void karaok_var_init(void);
void karaok_exit(void);
u16 karaok_mic_maxpow_get(void);   //com code
void karaok_mic_maxpow_set(u16 max_power);  //com code

void echo_reset_buf(void *cfg);
u8 get_magic_sta(void);

void karaok_mic_mute(void);
void karaok_mic_unmute(void);
void karaok_process(void);

void echo_set_level(const u16 *vol);    //混响等级设置
void echo_set_delay(u16 delay);     //混响间隔

void karaok_voice_rm_enable(void);  //开启消人声
void karaok_voice_rm_disable(void); //关闭消人声
void karaok_voice_rm_switch(void);  //消人声切换
bool karaok_get_voice_rm_sta(void); //获取消人声状态
void karaok_set_voice_rm_type(u8 type, const void *coef);       //消人声算法类型，type：0（默认硬件）；1：（软件），coef：滤波器参数

u16 karaok_mic_pow_calc(void);      //Karaok MIC能量检测
void mic_dnr_init(u8 v_cnt, u16 v_pow, u16 s_cnt, u16 s_pow);    //MIC动态降噪

void karaok_rec_init(u8 nchannel);
bool karaok_rec_fill_buf(u8 *buf);
void karaok_aux_rec_enable(void);
void karaok_aux_rec_disable(void);
void karaok_fmrx_rec_enable(void);
void karaok_fmrx_rec_disable(void);

void magic_voice_set_level(u8 type, u8 level);  //type:0(高音), 1(低音)， level：0~7
void magic_voice_process(void);
void mav_kick_start(void);
u8 get_dac_music_speed_status(void);
int dac_music_speed_change_en(u8 flag); //0：关闭 1：变速 2：魔音

void speed_voice_process(void);

void kara_sco_start(void);
void kara_sco_stop(void);
void dual_mic_channel_select(u8 left_ch,u8 right_ch);
void karaok_only_rec_mic_with_echo(u8 en);  //录音时只录MIC(包括MIC的回音)，不录音乐的声音

void micdnr_sta_set(u8 en);
u8 micdnr_sta_get(void);
void micdnr_level_init(u8 level);
bool reverb_func_is_en(void);
void set_wet_gain_level(u8 level);  //设置reverb的时间,0~16


void karaok_echo_filter_en_set(bool en);   //混响低通filter使能
bool karaok_echo_filter_en_get(void);      //查看混响混响低通filter是否使能
void karaok_magic_howling_en_set(bool en); //魔音和防啸叫使能
bool karaok_magic_howling_en_get(void); //查看魔音和防啸叫是否使能

#endif
